package TOP_Version1;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLRecoverableException;
import java.util.Scanner;

public class Top_AdminUpdate {
	static Top_AdminVO av = new Top_AdminVO();
	static Top_JDBC_SQL topsql = new Top_JDBC_SQL();
	static StringBuilder sb = new StringBuilder();
	static Scanner sc = new  Scanner(System.in);
	static Connection conn = null;
	static PreparedStatement pstmt = null;
	static ResultSet rs = null;
	static boolean b = true;
	static String add = null;
	static String addv = null;
	static String logId = Top_LoginMain.logIdVO;
	
	protected static void updateAdmin() {
		while ( b ) {
			System.out.print("수정하실 관리자의 아이디를 입력하세요 : ");
			add = sc.next();
			try {
				conn = Top_JDBC_Connection.openDataBase();
				pstmt = conn.prepareStatement(topsql.AdminSelectAllSQL);
				pstmt.setString( 1, add );
				rs = pstmt.executeQuery();
				if ( rs.next() ) {
					do {
						av.setAdmin_tr( rs.getString( 1 ) );
						av.setAdmin_id( rs.getString( 2 ) );
						av.setAdmin_name( rs.getString( 3 ) );
						av.setAdmin_pw( rs.getString( 4 ) );
						av.setAdmin_tel( rs.getString( 5 ) );
						av.setReg_date( rs.getString( 6 ) );
					} while ( rs.next() );
				b = false;
				} else { System.out.println("아이디를 잘못입력하셨습니다. 다시 입력해 주세요"); }
			} catch ( Exception e ) {
				e.printStackTrace();
			} finally {
				Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
			}
		}
		b = true;
		while ( b ) {
			System.out.print("관리자 이름을 변경하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.print("관리자 이름을 이력하세요 : ");
				av.setAdmin_name( sc.next() );
				b = false; break;
			case "N" : case "n" :
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("관리자 비밀번호를 변경하시겠습니까? [ Y / N ] :");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				while ( b ) {
					System.out.print("사용중인 비밀번호를 입력하세요 : ");
					addv = sc.next();
					try {
						conn = Top_JDBC_Connection.openDataBase();
						pstmt = conn.prepareStatement( topsql.AdminSelectAllSQL );
						pstmt.setString( 1, add );
						rs = pstmt.executeQuery();
						if ( rs.next() ) {
							if ( addv.equals( rs.getString(4) ) ) {
								while ( b ) {
									System.out.print("변경하실 비밀번호를 입력하세요 : ");
									av.setAdmin_pw( sc.next() );
									if ( av.getAdmin_pw().equals(av.getAdmin_id()) ) {
										System.out.println("아이디와 동일한 비밀번호는 사용하실 수 없습니다. 다시 입력해주세요");
									} else { b = false; break; }
								}
							} else { 
								System.out.println("비밀번호를 잘못 입력하셨습니다. 다시 확인해주세요");
							}
						} else { }
					} catch ( Exception e ) {
						e.printStackTrace();
					} finally {
						Top_JDBC_Connection.closeDataBase(conn, null, rs);
					}
				}
				b = false; break;
			case "N" : case "n" :
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("관리자 연락처를 변경하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.print("변경하실 연락처를 입력하세요 : ");
				av.setAdmin_tel( sc.next() );
				b = false; break;
			case "N" : case "n" :
				b = false; break;
			default : 
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		System.out.println( av.toString() );
		b = true;
		while ( b ) {
			System.out.print("저장하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				try {
					conn = Top_JDBC_Connection.openDataBase();
					pstmt = conn.prepareStatement( topsql.AdminUpdateSQL );
					pstmt.setString( 1, av.getAdmin_name() );
					pstmt.setString( 2, av.getAdmin_pw() );
					pstmt.setString( 3, av.getAdmin_tel() );
					pstmt.executeUpdate();
					System.out.println(add + " 계정 정보가 수정되었습니다.");
					System.out.println("관리자 관련 업무 화면으로 이동합니다.");
					sb = new StringBuilder();
					Top_AdminMain.Top_AdminSubScreen();
				} catch ( Exception e ) {
					e.printStackTrace();
				} finally {
					Top_JDBC_Connection.closeDataBase(conn, pstmt, rs);
				}
				b = false; break;
			case "N" : case "n" :
				System.out.println("관리자 관련 업무 화면으로 이동합니다.");
				sb = new StringBuilder();
				Top_AdminMain.Top_AdminSubScreen();
				b = false; break;
			default : 
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
		b = true;
		while ( b ) {
			System.out.print("다른 사용자 계정을 수정하시겠습니까? [ Y / N ] : ");
			switch ( sc.next() ) {
			case "Y" : case "y" :
				System.out.println("관리자 계정을 추가 수정합니다.");
				sb = new StringBuilder();
				updateAdmin(); b = false; break;
			case "N" : case "n" :
				System.out.println("관리자 관련 업무 화면으로 이동합니다.");
				sb = new StringBuilder();
				Top_AdminMain.Top_AdminSubScreen();
				b = false; break;
			default :
				System.out.println("잘못 입력하셨습니다. 다시 입력해주세요");
			}
		}
	}
}
